﻿#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <math.h>

//	打印0～100000之间的所有“水仙花数”

//	思路：1.先求出是几位数，n
//	2.根据位数得到每位的值
//	3.判断：每位的n次方之和是否等于本身

// 判定输入的整数为几位数
int Sedi(int x)
{
	int n = 1;
	while (x /= 10,x != 0)
	{
		n++;
	} 
	return n;
}

int main() 
{
	int j = 0;
	for (j = 0; j <= 100000; j++) 
	{
		int a = j;
		int n = Sedi(j);
		int count = 0;
		int i = 0;
		for (i = 0; i < n; i++)
		{
			int c = a % 10;
			count += (int)pow(c, n);
			a /= 10;
		}
		if (count == j)
		{
			printf("%d ", j);
		}
	}
	return 0;
}